package com.gpframework.module.module.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.gpframework.common.annotation.Excel;
import com.gpframework.common.pay.leshua.res.LeshuaScanCodePayRes;
import com.gpframework.module.common.domain.vo.CommonLabelVo;
import com.gpframework.module.common.domain.vo.CommonResourceVo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @ClassName BrandStoreVo
 * @Author gpframework
 * @Date 2022-03-25
 * @Version 1.0.0
 * @Description 门店Vo对象
 */
@Data
@ToString
@EqualsAndHashCode
@NoArgsConstructor
@Accessors(chain = true)
public class BrandStoreVo implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    @ApiModelProperty("ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long storeId;

    /**
     * 门店编码
     */
    @Excel(name = "门店编码")
    @ApiModelProperty("门店编码")
    private String storeNo;

    /**
     * 品牌id
     */
    @Excel(name = "品牌id")
    @ApiModelProperty("品牌id")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long brandId;

    @ApiModelProperty("品牌名称")
    @Excel(name = "品牌名称")
    private String brandName;

    @ApiModelProperty("公司名称")
    @Excel(name = "公司名称")
    private String companyName;

    /**
     * 订单id（最新）
     */
    @Excel(name = "订单id", readConverterExp = "最=新")
    @ApiModelProperty("订单id（最新）")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long orderId;

    /**
     * 系统用户id
     */
    @Excel(name = "系统用户id")
    @ApiModelProperty("系统用户id")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long brandUserId;

    /**
     * 系统账号
     */
    @Excel(name = "系统账号")
    @ApiModelProperty("系统账号")
    private String userName;

    /**
     * 销售员id
     */
    @Excel(name = "销售员id")
    @ApiModelProperty("销售员id")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long salesId;

    @Excel(name = "平台销售名称")
    @ApiModelProperty("平台销售名称")
    private String salesName;

    /**
     * 区域ids
     */
    @ApiModelProperty("区域ids")
    private String areaIds;
    /**
     * 区域名称
     */
    @ApiModelProperty("区域名称")
    private String areaNames;

    @ApiModelProperty("推荐人")
    private String referrerUserName;

    /**
     * 门店名称
     */
    @Excel(name = "门店名称")
    @ApiModelProperty("门店名称")
    private String storeName;

    /**
     * 门店网址
     */
    @Excel(name = "门店网址")
    @ApiModelProperty("门店网址")
    private String storeWebsite;

    /**
     * 门店介绍
     */
    @Excel(name = "门店介绍")
    @ApiModelProperty("门店介绍")
    private String storeIntroduce;

    /**
     * 门店logo
     */
    @Excel(name = "门店logo")
    @ApiModelProperty("门店logo")
    private String storeLogo;
    /**
     * 品牌logo
     */
    @Excel(name = "品牌logo")
    @ApiModelProperty("品牌logo")
    private String brandLogo;

    /**
     * 门店地址
     */
    @Excel(name = "门店地址")
    @ApiModelProperty("门店地址")
    private String storeAddress;

    /**
     * 门店经度
     */
    @Excel(name = "门店经度")
    @ApiModelProperty("门店经度")
    private String storeLongitude;

    /**
     * 门店纬度
     */
    @Excel(name = "门店纬度")
    @ApiModelProperty("门店纬度")
    private String storeLatitude;

    /**
     * 门店联系电话
     */
    @Excel(name = "门店联系电话")
    @ApiModelProperty("门店联系电话")
    private String storeMobile;

    /**
     * 门店邮箱
     */
    @Excel(name = "门店邮箱")
    @ApiModelProperty("门店邮箱")
    private String storeEmail;

    /**
     * 门店小程序二维码
     */
    @Excel(name = "门店小程序二维码")
    @ApiModelProperty("门店小程序二维码")
    private String storeQrcodeApp;

    /**
     * 门店支付二维码
     */
    @Excel(name = "门店支付二维码")
    @ApiModelProperty("门店支付二维码")
    private String storeQrcodePay;

    /**
     * 营业执照
     */
    @Excel(name = "营业执照")
    @ApiModelProperty("营业执照")
    private String licenseImage;

    /**
     * 法人
     */
    @Excel(name = "法人")
    @ApiModelProperty("法人")
    private String leaderName;

    /**
     * 联系方式（法人）
     */
    @Excel(name = "联系方式", readConverterExp = "法=人")
    @ApiModelProperty("联系方式（法人）")
    private String leaderMobile;

    /**
     * 是否试用过;0 否。1 是。
     */
    @Excel(name = "是否试用过;0 否。1 是。")
    @ApiModelProperty("是否试用过;0 否。1 是。")
    private String isTryout;

    /**
     * 试用多久（小时）。默认1天。
     */
    @Excel(name = "试用多久", readConverterExp = "小=时")
    @ApiModelProperty("试用多久（小时）。默认1天。")
    private Integer tryoutHour;

    /**
     * 短信总数量
     */
    @Excel(name = "短信总数量")
    @ApiModelProperty("短信总数量")
    private Integer smsTotalNum;

    /**
     * 短信发送数量
     */
    @Excel(name = "短信发送数量")
    @ApiModelProperty("短信发送数量")
    private Integer smsSendNum;

    /**
     * 短信剩余数量
     */
    @Excel(name = "短信剩余数量")
    @ApiModelProperty("短信剩余数量")
    private Integer smsNum;

    /**
     * 合同剩余数量
     */
    @Excel(name = "合同剩余数量")
    @ApiModelProperty("合同剩余数量")
    private Integer contractNum;

    /**
     * 有效开始时间
     */
    @Excel(name = "有效开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("有效开始时间")
    private Date effTimeStart;

    /**
     * 有效结束时间
     */
    @Excel(name = "有效结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("有效结束时间")
    private Date effTimeEnd;

    @ApiModelProperty("使用期限(天)")
    @Excel(name = "使用期限(天)", width = 30)
    private Integer useTime;

    /**
     * 门店状态;-10 过期。0 未开业。10 营业中。20 暂停使用。
     */
    @Excel(name = "门店状态;-10 过期。0 未开业。10 营业中。20 暂停使用。")
    @ApiModelProperty("门店状态;-10 过期。0 未开业。10 营业中。20 暂停使用。")
    private String storeStatus;

    /**
     * 显示的门店状态 20100 营业中 20101 暂停营业
     */
    @ApiModelProperty("显示的门店状态")
    private String showStatus;

    /**
     * 审核状态;1审核中、2审核通过、3不通过、4禁用
     */
    @Excel(name = "审核状态;1审核中、2审核通过、3不通过、4禁用")
    @ApiModelProperty("审核状态;1审核中、2审核通过、3不通过、4禁用")
    private String auditStatus;

    /**
     * 门店联系方式json数据
     */
    @ApiModelProperty("门店联系方式json数据")
    private String contactInformation;

    /**
     * 排序
     */
    @Excel(name = "排序")
    @ApiModelProperty("排序")
    private Integer sort;

    /**
     * 备注
     */
    @Excel(name = "备注")
    @ApiModelProperty("备注")
    private String remarks;

    /**
     * 创建者
     */
    @ApiModelProperty("创建者")
    private String createBy;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("创建时间")
    private Date createTime;

    /**
     * 更新者
     */
    @ApiModelProperty("更新者")
    private String updateBy;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("更新时间")
    private Date updateTime;

    /**
     * 标签list
     */
    @ApiModelProperty("标签list")
    private List<CommonLabelVo> storeLabelList;

    /**
     * 附件list
     */
    @ApiModelProperty("附件list")
    private List<CommonResourceVo> commonResourceVoList;

    /**
     * 订单状态;（-1:待支付。0：待发货。1：待收货。 2：已收货。 3：已完成。）
     */
    @Excel(name = "订单状态;", readConverterExp = "订单状态;（100 待支付。110支付中。120 已支付。200 待发货。210待收货。220 已收货。230 已完成。400 退款。）")
    @ApiModelProperty("订单状态;（100 待支付。110支付中。120 已支付。200 待发货。210待收货。220 已收货。230 已完成。400 退款。）")
    private String orderStatus;

    /**
     * 付款金额
     */
    @Excel(name = "付款金额")
    @ApiModelProperty("付款金额")
    private BigDecimal payPrice;

    /**
     * 已选使用期限
     */
    @Excel(name = "已选使用期限")
    @ApiModelProperty("已选使用期限")
    private String sku;

    /**
     * 付费类型（10使用期限 20业务模块）
     */
    @Excel(name = "付费类型（10使用期限 20业务模块）")
    @ApiModelProperty("付费类型（10使用期限 20业务模块）")
    private String payType;

    /**
     * 有效期（开始）
     */
    @Excel(name = "有效期（开始）")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty("有效期（开始）")
    private Date effStartTime;

    /**
     * 有效期（结束）
     */
    @Excel(name = "有效期（结束）")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty("有效期（结束）")
    private Date effEndTime;

    /**
     * 规格id
     */
    @ApiModelProperty("规格id")
    private Long productAttrValueId;

    /**
     * 门店图片list
     */
    @ApiModelProperty("门店图片list")
    private List<String> storeImgList;
    /**
     * 门店风采list
     */
    @ApiModelProperty("门店风采list")
    private List<String> elegantDemeanourList;

    @ApiModelProperty("品牌")
    private BrandInfoVo brandInfoVo;



    @ApiModelProperty("显示的登录密码")
    private String showPassword;

    @ApiModelProperty("手机号")
    private String phonenumber;

    @ApiModelProperty("距离用户位置距离（单位米）")
    private BigDecimal distance;

    @ApiModelProperty("支付扫码返回参数")
    private LeshuaScanCodePayRes leshuaScanCodePayRes;

    @ApiModelProperty("商户ID")
    private String merchantId;

    @ApiModelProperty("商户类型： 1:个人3:企业")
    private Integer merchantType;

    @ApiModelProperty("审核状态 REJECTED:退回 REVIEW:待人工检查 PASSED:通过 UNKNOWN:未知 ADD_INFO:待完善资料 UDITING:待审核")
    private String merchantStatus;

    @ApiModelProperty("问卷二维码")
    private String problemQrcode;
    @ApiModelProperty("营业时间")
    private String businessHours;
    @ApiModelProperty("今天入场人数")
    private Integer totalEntranceNum;
    @ApiModelProperty("设备id")
    private Long deviceInfoId;
    @ApiModelProperty("设备号")
    private String deviceCode;
    @ApiModelProperty("设备序列号。门店下必定唯一")
    private String deviceSn;
    @ApiModelProperty("机器指纹")
    private String fingerprint;

    @ApiModelProperty("会员小程序二维码")
    private String memberQrCode;
    @ApiModelProperty("员工小程序二维码")
    private String employeeQrCode;
    @ApiModelProperty("门店权限标识")
    List<String> componentList;

    public void vacant() {
        this.orderId = null;
        this.brandUserId = null;
        this.userName = null;
        this.salesId = null;
        this.storeWebsite = null;
        this.storeIntroduce = null;
        this.storeLogo = null;
        this.storeAddress = null;
        this.storeLongitude = null;
        this.storeLatitude = null;
        this.storeMobile = null;
        this.storeEmail = null;
        this.storeQrcodePay = null;
        this.licenseImage = null;
        this.leaderName = null;
        this.leaderMobile = null;
        this.isTryout = null;
        this.tryoutHour = null;
        this.smsTotalNum = null;
        this.smsSendNum = null;
        this.smsNum = null;
        this.contractNum = null;
        this.effTimeStart = null;
        this.effTimeEnd = null;
        this.useTime = null;
        this.storeStatus = null;
        this.auditStatus = null;
        this.showPassword = null;
        this.phonenumber = null;
        this.orderStatus = null;
        this.payPrice = null;
    }
}
